package algo3.juegoCarmenSanDiego.modelo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import org.w3c.dom.Element;

public class Ciudad {
	
	private int posicionHorizontal;
	private int posicionVertical;
	private String 	nombre;
	
	List<Edificio> edificiosEnUnaLista = new ArrayList<Edificio>();
	private Map<TipoEdificioEnum, Edificio> mapEdificios = new HashMap<TipoEdificioEnum, Edificio>();
	
	public static Ciudad cargarAMemoria(Element elemento) {
		Ciudad nuevaCiudad = new Ciudad();
		nuevaCiudad.nombre = ((Element)elemento).getAttribute("nombre");
		nuevaCiudad.posicionHorizontal =Integer.parseInt(((Element)elemento).getAttribute("posicionHorizontal"));
		nuevaCiudad.posicionVertical =Integer.parseInt(((Element)elemento).getAttribute("posicionVertical"));
		Element elementoEdificio = (Element) ((Element) elemento).getElementsByTagName("edificios").item(0);
		for(int i=0; i< elementoEdificio.getChildNodes().getLength(); i++) {
				
 		Edificio edificio = Edificio.cargarAMemoria(elementoEdificio.getChildNodes().item(i));
			nuevaCiudad.agregarEdificio(edificio);
			}
			return nuevaCiudad;
		}
	public Edificio obtenerEdificio (TipoEdificioEnum unTipoDeEdificio){
		return this.mapEdificios.get(unTipoDeEdificio);
	}
	public Map<TipoEdificioEnum, Edificio> getEdificios(){
		return this.mapEdificios;
	}
	public void agregarEdificio(Edificio unEdificio){
		this.mapEdificios.put(unEdificio.getTipoDeEdificio(), unEdificio);
		this.edificiosEnUnaLista.add(unEdificio);
	}
	public List<Edificio> getEdificiosEnUnaLista(){
		return this.edificiosEnUnaLista;
	}
	public Ciudad(String nombre){
		this.nombre = nombre;
	}
	public Ciudad(){}
	public int getPosicionHorizontal(){
		return this.posicionHorizontal;
	};
	public int getPosicionVertical() {
		return this.posicionVertical;
	};
	public void setPosicionHorizontalYVertical(int posicionHorizontal,int posicionVertical){
		this.posicionHorizontal = posicionHorizontal;
		this.posicionVertical = posicionVertical;
	}
	public void setNombreDeLaCiudad(String nombreCiudad){
		this.nombre = nombreCiudad;
	}
	public String getNombreDeCiudad(){
		return this.nombre;
	}
}